﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntityLayer;
using FacadeInterface;
using FacadeImplemention;

namespace pryCallCenter.Procesos.CalculoComisiones
{
    public partial class frmCalculoComisiones : System.Web.UI.Page
    {
        private clsIFacadeCalculoComisiones InterfaceCalculoComisiones;
        private static List<CalculoComisiones_Result> ListarCalculoComisiones = null;
        private static List<CalculoComisionesXVendedor_Result> ListarCalculoComisionesXVendedor = null;
        
        private String msg, titulo;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["USUARIO"] == null)
                    {
                        Response.Redirect("~/Account/Login.aspx", false);
                    }
                    //((Persona)Session["USUARIO"]).CodigoPersona.ToString();
                    txtUsuario.Text = "Rocio Talla";
                    Fechas();
                }
                String buscar = (Session["buscar"] != null) ? Session["buscar"].ToString().Trim() : "";
                VerDetalleComision(buscar);
                String buscarC = (Session["buscarC"] != null) ? Session["buscarC"].ToString().Trim() : "";
                String fechaDesde = (Session["fechaDesde"] != null) ? Session["fechaDesde"].ToString().Trim() : "";
                String fechaHasta = (Session["fechaHasta"] != null) ? Session["fechaHasta"].ToString().Trim() : "";
                DetalleVenta(buscarC, fechaDesde, fechaHasta);
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CARGAR LA PAGINA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void Fechas()
        {
            try
            {
                DateTime fechaActual = DateTime.Now;
                String fechaCompleta = fechaActual.ToString("dd/MM/yyyy");
                String fechaInicial = "01/01/" + fechaActual.ToString("yyyy");
                dtpDesde.Text = fechaInicial;
                dtpHasta.Text = fechaCompleta;
                dtpFecha.Text = fechaCompleta;
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL MOSTRAR LAS FECHAS";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        protected void CalcularComision(object sender, EventArgs e)
        {
            try
            {
                //String Periodo = String.Format("{0} - {1}", fechaInicial, fechaCompleta);
                DateTime fhinicial = Convert.ToDateTime(dtpDesde.Text);
                DateTime fhfinal = Convert.ToDateTime(dtpHasta.Text);
                String fechaInicial = fhinicial.ToString("yyyyMMdd");
                String fechaCompleta = fhfinal.ToString("yyyyMMdd");
                Session["fechaDesde"] = fechaInicial;
                Session["fechaHasta"] = fechaCompleta;
                DetalleVenta("1", fechaInicial, fechaCompleta);
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CALCULAR LA COMISION";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void DetalleVenta(String buscar, String fechaDesde, String fechaHasta)
        {
            try
            {
                if (buscar != "")
                {
                    Session["buscarC"] = "1";
                    InterfaceCalculoComisiones = new clsFacadeCalculoComisiones();
                    ListarCalculoComisiones = new List<CalculoComisiones_Result>();
                    ListarCalculoComisiones = InterfaceCalculoComisiones.CalcularComisiones(fechaDesde, fechaHasta);
                    dgvResumenComisiones.DataSource = ListarCalculoComisiones;
                    dgvResumenComisiones.DataBind();
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CALCULAR LAS COMISIONES";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }


            /*
            dgvResumenComisiones.ClearSort();
            DetalleComisiones = new List<strDetalleComisiones>();
            int Index = 0;
            strDetalleComisiones Item;
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 1;
            Item.Empleado = "Pier Cerna Alegre";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 18;
            Item.ComisionMontoAFacturar = 213;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 2;
            Item.Empleado = "Luis Lopez Mendez";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 23;
            Item.ComisionMontoAFacturar = 168;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 3;
            Item.Empleado = "Algredo Barrionuevo Tello";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 20;
            Item.ComisionMontoAFacturar = 230;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 4;
            Item.Empleado = "Carlos Beraun Torres";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 23;
            Item.ComisionMontoAFacturar = 257;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 5;
            Item.Empleado = "Jorge Lazo Gutierrez";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 17;
            Item.ComisionMontoAFacturar = 201;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            Index = Convert.ToInt16(dgvResumenComisiones.DetailRows.VisibleCount.ToString());
            Item = new strDetalleComisiones();
            Item.CodEmpleado = 6;
            Item.Empleado = "Pedro Lira Romero";
            Item.Periodo = Periodo;
            Item.ProductosVendidos = 30;
            Item.ComisionMontoAFacturar = 590;
            DetalleComisiones.Add(Item);
            //-------------------------------------------------------------------
            dgvResumenComisiones.DataSource = DetalleComisiones;
            dgvResumenComisiones.DataBind();
            */
        }

        protected void VerDetalle(object sender, EventArgs e)
        {
            try
            {
                VerDetalleComision("1");
                ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcDetalleComisiones.Show();", true);
            }
            catch (Exception ex)
            {
                titulo = "ERRRO AL CALCULAR EL DETALLE";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void VerDetalleComision(String buscar)
        {
            try
            {
                if (buscar != "")
                {
                    int index = dgvResumenComisiones.FocusedRowIndex;
                    if (index != -1)
                    {
                        String CodEmpleado = dgvResumenComisiones.GetRowValues(index, "codempleado").ToString();
                        DateTime fhinicial = Convert.ToDateTime(dtpDesde.Text);
                        DateTime fhfinal = Convert.ToDateTime(dtpHasta.Text);
                        String fechaDesde = fhinicial.ToString("yyyyMMdd");
                        String fechaHasta = fhfinal.ToString("yyyyMMdd");
                        DetalleComisionxOperador(CodEmpleado, fechaDesde, fechaHasta);
                    }
                    else
                    {
                        Session["buscar"] = null;
                        titulo = "Mensaje";
                        msg = "Debe Seleccionar un Empleado";
                        MostrarComentario(msg, titulo);
                    }
                }
            }
            catch (Exception ex)
            {
                Session["buscar"] = null;
                titulo = "ERROR AL MOSTRAR EL DETALLE DE LA COMISION";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void DetalleComisionxOperador(String codempleado, String fechaDesde, String fechaHasta)
        {
            try
            {
                ListarCalculoComisionesXVendedor = new List<CalculoComisionesXVendedor_Result>();
                InterfaceCalculoComisiones = new clsFacadeCalculoComisiones();
                ListarCalculoComisionesXVendedor = InterfaceCalculoComisiones.CalcularComisionesxVendedor(Convert.ToInt16(codempleado), fechaDesde, fechaHasta);
                dgvDetalleComisionesxOperador.DataSource = ListarCalculoComisionesXVendedor;
                dgvDetalleComisionesxOperador.DataBind();
                Double total = 0;
                foreach (CalculoComisionesXVendedor_Result item in ListarCalculoComisionesXVendedor)
                {
                    total += Convert.ToDouble(item.montocomision);
                }
                txtTotal.Text = total.ToString("C2");
                Session["buscar"] = "1";
            }
            catch (Exception ex)
            {
                Session["buscar"] = null;
                titulo = "ERROR AL GENERAR EL DETALLE DE LA COMISION";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }         
        }

        private void MostrarComentario(String msg, String titulo)
        {
            pcMensaje.HeaderText = titulo;
            lblMensaje.Text = msg;
            ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
        }
       
    }
}